package com.shujia.spark.core

import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.rdd.RDD

object Demo07SortBy {
  def main(args: Array[String]): Unit = {

    val conf: SparkConf = new SparkConf()

    conf.setAppName("Demo07SortBy")
    conf.setMaster("local")

    val sc: SparkContext = new SparkContext(conf)

    val stuRDD: RDD[String] = sc.textFile("spark/data/stu/students.txt")

    // 按照年龄的降序排列
    /**
     * sortBy：转换算子，用于排序
     * 需要接收一个函数f用于指定用什么进行排序
     * 默认升序，可以通过ascending参数控制升降序
     *
     * RDD没有sortWith以及sorted两个算子
     */
    stuRDD.sortBy(_.split(",")(2).toInt).foreach(println)

    // 先按age升序再按id降序排列
    stuRDD.sortBy(line => {
      val splits: Array[String] = line.split(",")
      val id: String = splits(0)
      val age: String = splits(2)
      age + (9999999999L - id.toInt).toString
    }).foreach(println)
  }

}
